home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / MCC_NList / Developer / Amiga-E / Examples / nlist_example.e < prev    next >
Encoding:
Text File  |  1997-03-22  |  5.7 KB  |  169 lines

  1. /*
  2.    A simple example of using NList, NListview and NFloattext in AmigaE
  3.    Written by Piotr Pawlow (PP/UNION)
  4. */   
  5.  
  6. OPT PREPROCESS
  7.  
  8. MODULE 'utility/tagitem','mui/nlist_mcc','mui/nlistview_mcc',
  9.        'mui/nfloattext_mcc','muimaster','libraries/mui','amigalib/boopsi',
  10.        'libraries/asl','workbench/startup','fakestack'
  11.  
  12. DEF app,wi_Master
  13.  
  14. PROC main() HANDLE
  15.   DEF signal,opened,filename,rdargs,args:PTR TO LONG
  16.   DEF buf,nlist,filenameobj,retid,nfloattext
  17.   DEF wb:wbstartup,filename2,filename2obj,buf2
  18.   DEF stack
  19.  
  20.   stack:=fakestack()
  21.   IF (wb:=wbmessage) THEN CurrentDir(wb.arglist.lock)
  22.  
  23.   args:=[0,0]
  24.  
  25.   IF (rdargs:=ReadArgs('NLISTFILE=NF,FLOATTEXTFILE=FF',args,0))=0 THEN Raise('Wrong arguments')
  26.  
  27.   IF args[0] THEN filename:=args[0] ELSE filename:='nlist_example.txt'
  28.   IF args[1] THEN filename2:=args[1] ELSE filename2:='nfloattext_example.txt'
  29.  
  30.   IF (muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
  31.     Raise('failed to open muimaster.library')
  32.  
  33.   app := ApplicationObject,
  34.     MUIA_Application_Title      , 'NList Example',
  35.     MUIA_Application_Version    , '$VER: NList Exaple 1.0 (14.10.96)',
  36.     MUIA_Application_Author     , 'Piotr Pawlow (PP/UNION)',
  37.     MUIA_Application_Description, 'Just a little example...',
  38.     MUIA_Application_Base       , 'NL_EXAMPLE',
  39.     SubWindow, wi_Master := WindowObject,
  40.       MUIA_Window_ID, "MAIN",
  41.       MUIA_Window_Title, 'NList Example',
  42.       MUIA_Window_ActiveObject,nlist,
  43.       MUIA_Window_Height,MUIV_Window_Height_Visible(80),
  44.       MUIA_Window_Width,MUIV_Window_Width_Visible(80),
  45.       WindowContents, RegisterGroup(['NList','NFloattext',0]),
  46.         Child, VGroup, GroupFrameT('NList class'),
  47.           Child, nlist:=NListviewObject,
  48.             MUIA_CycleChain,MUI_TRUE,
  49.             MUIA_NListview_NList,NListObject,
  50.               MUIA_NList_DragSortable,MUI_TRUE,
  51.               MUIA_NList_ShowDropMarks,MUI_TRUE,
  52.               MUIA_NList_MultiSelect,MUIV_NList_MultiSelect_Default,
  53.             End,
  54.           End,
  55.           Child, HGroup,
  56.             Child, KeyLabel2('File:',"F"),
  57.             Child, PopaslObject,
  58.               MUIA_Popstring_String, filenameobj:=StringObject,
  59.                 MUIA_CycleChain,MUI_TRUE,
  60.                 MUIA_String_MaxLen,138,
  61.                 StringFrame,
  62.                 MUIA_ControlChar,"f",
  63.               End,
  64.               MUIA_Popstring_Button, PopButton(MUII_PopFile),
  65.               ASLFR_TITLETEXT, 'Please select a file...',
  66.               ASLFR_REJECTICONS,TRUE,
  67.             End,
  68.           End,
  69.         End,
  70.         Child, VGroup, GroupFrameT('NFloattext class'),
  71.           Child, NListviewObject,
  72.             MUIA_CycleChain,MUI_TRUE,
  73.             MUIA_NListview_Horiz_ScrollBar,MUIV_NListview_HSB_None,
  74.             MUIA_NListview_NList,nfloattext:=NFloattextObject,
  75.               MUIA_Floattext_Justify,MUI_TRUE,
  76.             End,
  77.           End,
  78.           Child, HGroup,
  79.             Child, KeyLabel2('File:',"F"),
  80.             Child, PopaslObject,
  81.               MUIA_Popstring_String, filename2obj:=StringObject,
  82.                 MUIA_CycleChain,MUI_TRUE,
  83.                 MUIA_String_MaxLen,138,
  84.                 StringFrame,
  85.                 MUIA_ControlChar,"f",
  86.               End,
  87.               MUIA_Popstring_Button, PopButton(MUII_PopFile),
  88.               ASLFR_TITLETEXT, 'Please select a file...',
  89.               ASLFR_REJECTICONS,TRUE,
  90.             End,
  91.           End,
  92.         End,
  93.       End,
  94.     End,
  95.   End
  96.  
  97.   IF app=NIL THEN Raise('Failed to create application.')
  98.  
  99.   doMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
  100.   doMethodA(filenameobj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOAD"])
  101.   doMethodA(filename2obj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOD2"])
  102.     
  103.   set(wi_Master,MUIA_Window_Open,MUI_TRUE)
  104.   get(wi_Master,MUIA_Window_Open,{opened})
  105.   IF opened=FALSE THEN Raise('Failed to open window.')
  106.  
  107.   buf2:=loadcontents(filename2)
  108.   set(filename2obj,MUIA_String_Contents,filename2)
  109.   IF buf2 THEN set(nfloattext,MUIA_NFloattext_Text,buf2)
  110.   buf:=loadcontents(filename)
  111.   set(filenameobj,MUIA_String_Contents,filename)
  112.   IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
  113.  
  114.   REPEAT
  115.     retid:=doMethodA(app,[MUIM_Application_NewInput,{signal}])
  116.     IF retid="LOAD" THEN buf:=loadnew(buf,nlist,filenameobj)
  117.     IF retid="LOD2" THEN buf2:=loadnew2(buf2,nfloattext,filename2obj)
  118.     IF (signal) THEN Wait(signal)
  119.   UNTIL retid=MUIV_Application_ReturnID_Quit
  120.   
  121.   set(wi_Master,MUIA_Window_Open,FALSE)
  122.  
  123. EXCEPT DO
  124.   IF rdargs THEN FreeArgs(rdargs)
  125.   IF app THEN Mui_DisposeObject(app)
  126.   IF muimasterbase THEN CloseLibrary(muimasterbase)
  127.   IF exception THEN WriteF('\s\n',exception)
  128.   fakestack(stack)
  129. ENDPROC
  130.  
  131. PROC loadcontents(filename)
  132. DEF len,handle,buf:PTR TO CHAR
  133.   len:=FileLength(filename)
  134.   IF handle:=Open(filename,OLDFILE)
  135.     IF (buf:=New(len+1))=0
  136.       info('Not enough memory')
  137.       RETURN 0
  138.     ENDIF
  139.     IF (Read(handle,buf,len)=-1) OR (len<1)
  140.       Close(handle)
  141.       info('Failed to read file %s',[filename])
  142.       RETURN 0
  143.     ENDIF
  144.     Close(handle)
  145.   ELSE
  146.     info('Failed to open file %s',[filename])
  147.     RETURN 0
  148.   ENDIF
  149. ENDPROC buf
  150.  
  151. PROC info(text,args=0) IS Mui_RequestA(app,wi_Master,0,0,'*_OK',text,args)
  152.  
  153. PROC loadnew(buf,nlist,stringobject)
  154. DEF name
  155.   Dispose(buf)
  156.   doMethodA(nlist,[MUIM_NList_Clear,0])
  157.   get(stringobject,MUIA_String_Contents,{name})
  158.   buf:=loadcontents(name)
  159.   IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
  160. ENDPROC buf
  161.  
  162. PROC loadnew2(buf,nfloattext,stringobject)
  163. DEF name
  164.   Dispose(buf)
  165.   get(stringobject,MUIA_String_Contents,{name})
  166.   buf:=loadcontents(name)
  167.   set(nfloattext,MUIA_Floattext_Text,buf)
  168. ENDPROC buf
  169.